// NC61.两数之和/map
// 类似力扣1.两数之和/twoSum
// https://www.nowcoder.com/practice/20ef0972485e41019e39543e8e895b7f
//  hash
// 给出一个整型数组 numbers 和一个目标值 target，
// 请在数组中找出两个加起来等于目标值的数的下标，返回的下标按升序排列。

#include <algorithm>
#include <iostream>
#include <map>
#include <string>
#include <vector>
using namespace std;
//  3  4  2  6
//  3  4  2
class Solution {
 public:
  vector<int> twoSum(vector<int>& numbers, int target) {
        map<int,int> mapExist;
        for (int i = 0; i < numbers.size(); i++) {
            auto it = mapExist.find(target - numbers[i]);
            if (it != mapExist.end()) {
                return {it->second + 1, i+1};
            }
            mapExist[numbers[i]] = i;
        }
        return {};
  }
};
int main() {
  Solution s;
  vector<int> nums;
  nums.push_back(3);
  nums.push_back(2);
  nums.push_back(4);
  s.twoSum(nums, 6);
  return 0;
}
